package main;

import beans.Forum;
import beans.Mitglied;
import java.beans.PropertyVetoException;
import java.util.ArrayList;
import java.util.List;

public class Steuerung {

    private List<Forum> foren = new ArrayList<>();
    private EinUndAusgabe io = new EinUndAusgabe();

    private String textEingeben(String aufforderung) {
        System.out.print(aufforderung);
        return io.leseString();
    }

    public void forenAnlegen() {
        int eingabe = -1;
        while (eingabe != 0) {
            System.out.print("Beenden (0) oder Forum anlegen (1): ");
            eingabe = io.leseInteger();
            if (eingabe == 1) {
                Forum f = new Forum();
                f.setTitel(textEingeben("Titel: "));
                foren.add(f);
            }
        }
    }

    public void mitgliederAnlegen() {
        int eingabe = -1;
        while (eingabe != 0) {
            System.out.print("Beenden (0) oder Mitglied anlegen (1): ");
            eingabe = io.leseInteger();
            if (eingabe == 1) {
                Mitglied m = new Mitglied();
                m.setName(textEingeben("Name: "));
                for (Forum f : foren) {
                    System.out.println("Forum: " + f.getTitel() + "\n"
                            + " (0) Passiv bleiben\n"
                            + " (1) nur Zuhören\n"
                            + " (2) Aussagen mitentscheiden");
                    // TODO 
                    eingabe = io.leseInteger();
                    switch(eingabe) {
                        case 0:     //Passiv bleiben
                            break;
                        case 1:     //Zuhören
                            f.addPropertyChangeListener(m);
                            break;
                        case 2:     //Abstimmen
                            f.addPropertyChangeListener(m);
                            f.addVetoableChangeListener(m);
                            break;
                        default:break;
                    }
                }
            }
        }
    }

    public void diskutieren() {
        int forum    = -1;
        String thema = "";
        
        for(int i=0; i<foren.size(); i++) {
            System.out.println("("+i+")" + foren.get(i).getTitel());
        }
        System.out.println("Welches Forum? ");
        forum = io.leseInteger();
        System.out.print("Thema: ");
        thema = io.leseString();
        
        Forum f = foren.get(forum);
        try {
           f.setThema(thema);   
        } catch(PropertyVetoException pve) {
            System.out.println(pve.getMessage());
        }
         
    }

    public void dialog() {
        int eingabe = -1;
        System.out.println("Foren einrichten.");
        forenAnlegen();
        System.out.println("Mitglieder einrichten.");
        mitgliederAnlegen();
        while (eingabe != 0) {
            System.out.println("Was wollen Sie machen?\n"
                    + " (0) Programm beenden\n"
                    + " (1) Forum zur Diskussion wählen\n"
                    + " (2) Foren mit verabschiedeten Aussagen ausgeben\n");
            eingabe = io.leseInteger();
            if (eingabe == 1) {
                diskutieren();
            }
            if (eingabe == 2) {
                for (Forum f : foren) {
                    System.out.println(f.getStatements());
                }
            }
        }
    }
}
